<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
</head>
<body>
    <div>05-浅拷贝</div>
    <script>


        // 1  使用Object.assign
        // Object.assign()是ES6中对象的拷贝方法，接受的第一个参数是目标对象，其余参数是源对象，
        // 用法：Object.assign(target, source_1, ···)，该方法可以实现浅拷贝，也可以实现一维对象的深拷贝。
        // let target = {a:1}
        // let object2 = {b:2}
        // let object3 = {c:3}
        // Object.assign(target,object2,object3)
        // console.log(target)

        // 2   扩展运算符
        // 浅拷贝  指的是只拷贝最外层的属性  扩展之后就是拷贝第二层的属性

        // let obj1 = {a:1,b:{c:2}}
        // let obj2={...obj1}
        // obj1.a = 2;
        // console.log(obj1)
        // console.log(obj2)
        // obj1.b.c=2
        // console.log(obj1)
        // console.log(obj2)

        // 3  数组浅拷贝
        // 1使用Array.prototype.slice
        // let arr = [1,2,3,4]
        // console.log(arr.slice())
        // console.log(arr.slice()===arr)
        // 2使用Array.prototype.concat
        // 合并数组
        // let arr = [1,2,3,4]
        // console.log(arr.concat())
        // console.log(arr.concat()===arr)

        //  4  手写实现浅拷贝

        // function shallowCopy(object){
        //     // 只拷贝对象
        //     if(!object||typeof object!=="object")return 

        //     // 
        //     let newObjct = Array.isArray(object)?[]:{}

        //     for(let key in object){
        //         newObjct[key]= object[key]
        //     }
        //     return newObjct
        // }

</script>
</body>
</html>
